package sprint2;

import java.io.Serializable;

/**
 * Gun die een Gevechtsschip kan bevatten. 
 * Je kunt een BattleShipGun in een Gevecht tussen twee BattleShips gebruiken. 
 * @author Marco Schultewolter
 *
 */
public class BattleShipGun implements Serializable {
	private String name;
	private String description;
	private double damage;
	private double percentageOfSuccess;
	
	/**
	 * Constructor van BattleShipGun.
	 * @param name De naam van de Gun.
	 * @param description Een korte beschrijving.
	 * @param damage Geeft aan, hoe veel damage deze gun kan maken.
	 * @param percentageOfSuccess Geeft aan, met welke kans je met success aanvalt. Kans moet tussen 0 en 1 zijn;
	 */
	public BattleShipGun(String name, String description, double damage, double percentageOfSuccess) {
		this.name = name;
		this.description = description;
		this.damage = damage;
		this.percentageOfSuccess = percentageOfSuccess;
	}
	
	public String getName() {
		return name;
	}
	public String getDescription() {
		return description;
	}
	public double getDamage() {
		return damage;
	}
	public double getPercentageOfSuccess() {
		return percentageOfSuccess;
	}
	
	/**
	 * Probeert op een Gevechtsschip te schieten.
	 * @param bs Het Gevechtsschip dat wordt aangevallen.
	 * @return true, als je raakgeschoten hebt, false als niet. (afhankelijk van percentageOfSucces van de gun)
	 */
	public boolean shoot(BattleShip bs) {
		if (Math.random() <= percentageOfSuccess) {
			bs.decreaseState(damage);
			return true;
		} else {
			return false;
		}
	}
	
	public String toString() {
		return name + " (" + description + ")";
	}
}
